package com.company.sendemo.basics.afJavaArray.foreach;

import java.util.ArrayList;
import java.util.Iterator;

//java遍历list4种方式
public class ListTraverse {
    //List循环遍历
    public static void main(String[] args) {
        ArrayList<String> strList = new ArrayList<>();
        strList.add("aaa")    ;
        strList.add("ccc")    ;
        strList.add("ddd")    ;

        //第一种 普通for循环遍历方式（好处是可以选择下标）
        for (int i = 0; i < strList.size(); i++) {
            System.out.println(strList.get(i));
        }
        System.out.println();
        //第二种 普通的for循环
        for (String str: strList) {
            System.out.println(str);
        }
        //第三种 使用Iterator迭代器
        Iterator<String> iterator = strList.iterator();
        while (iterator.hasNext()){
            String next = iterator.next();
            System.out.println(next);
        }
        //第四种 java Lambda方式（箭头函数）
        strList.forEach(System.out::println);
        //和下面的写法等价（当后边只有一行内人是可以简写的）

//        strList.forEach(s -> {
//            System.out.println(s);
//        });
        strList.forEach(s -> System.out.println(s));
    }


//    如果想要在循环的过程中国，使用下标，推荐第一种方式方式；
//
//    如果需要曾强for循环，可以直接使用对象，推荐使用第二种方式；
//
//    如果需要在遍历过程中删除元素推荐第三种使用Iterator；
//
//    如果是JDK1.8以上版本，追求效果简洁，可以使用第四种方式使用forEach箭头函数
}
